#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "trans_inf.pb-c.h" // 使用 protoc 生成的头文件

void send_login_message(const char *username, const char *passwd) {
    // 1. 初始化 login 消息
    Login login_msg = LOGIN__INIT;
    login_msg.username = (char *)username;
    login_msg.passwd = (char *)passwd;

    // 2. 序列化 login 消息
    unsigned long login_size = protobuf_c_message_get_packed_size((ProtobufCMessage *)&login_msg);
    uint8_t *login_data = malloc(login_size);
    protobuf_c_message_pack((ProtobufCMessage *)&login_msg, login_data);

    // 3. 构造 all 消息
    All all_msg = ALL__INIT;
    all_msg.type = "login"; // 设置消息类型为 "login"
    all_msg.payload.data = login_data;
    all_msg.payload.len = login_size;

    // 4. 序列化 all 消息
    size_t all_size = protobuf_c_message_get_packed_size((ProtobufCMessage *)&all_msg);
    uint8_t *all_data = malloc(all_size);
    protobuf_c_message_pack((ProtobufCMessage *)&all_msg, all_data);

    // 5. 模拟发送（打印消息大小和内容）
    printf("Sending 'all' message:\n");
    printf("  Message Type: %s\n", all_msg.type);
    printf("  Serialized Size: %zu bytes\n", all_size);

    // 6. 清理内存
    free(login_data);
    free(all_data);
}

int main() {
    // 测试发送 login 消息
    send_login_message("user1", "password123");
    return 0;
}
